#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<errno.h>

size_t my_strlen1(const char* p);
size_t my_strlen2(const char* p);
size_t my_strlen3(const char* p);

char* my_strcpy(char* des, const char* source);
char* my_strncpy(char* des, const char* source, size_t n);

char* my_strcat(char* des, const char* source);
char* my_strncat(char* des, const char* source, size_t n);

int my_strcmp(const char* p1, const char* p2);
int my_strncmp(const char* p1, const char* p2, size_t n);

char* my_strstr(const char* str1, const char* str2);

void* my_memmove(void* dest, void* sorc, size_t n);

void* my_memcpy(void* dest, void* sorc, size_t n);

int my_memcmp(const void* str1, const void* str2, size_t n);

void* my_memset(void* dest, int val, size_t n);